#include "svgpreview.h"

#include <qobject.h>
#include <qstring.h>
#include <pluginGl.h>
#include <functional>
#include <qsciscintilla.h>
#include <QDebug>

#define PROC_METADATA(metadata) pProcData->metadata = metadata;
#define PROC_META(metatype, metadata) pProcData->metatype = QString(metadata);
#define NPLUGIN_METADATA(name, version, author, comment, filepath)\
        pProcData->m_strPlugName = QString(name);       \
        pProcData->m_version     = QString(version);    \
        pProcData->m_strComment  = QString(comment);    \
        pProcData->m_auther      = QString(author);     \
        pProcData->m_strFilePath = QString(filepath);   \

#define NPLUGIN_IMPLEMENT(imp_class)                        \
    imp_class *imp = new imp_class(pNotepad, getCurEdit()); \
    imp->setWindowFlag(Qt::Window);                         \
    imp->show();                                            \


bool NDD_PROC_IDENTIFY(NDD_PROC_DATA* pProcData) {
//    // [必选]插件名称
//    PROC_META(m_strPlugName, "SVG Preview");
//    // [必选]插件的全局路径
//    PROC_META(m_strFilePath, "");
//    // [可选]插件说明
//    PROC_META(m_strComment , "预览 SVG 文件");
//    // [可选]版本号码
//    PROC_META(m_version    , "v0.1");
//    // [可选]作者名称
//    PROC_META(m_auther     , "zinface");
//    return true;

    NPLUGIN_METADATA("SVG Preview", "v0.1", "zinface@163.com",
                     "预览 SVG 文件", "");
    return true;
}

//插件的入口点函数
int NDD_PROC_MAIN(QWidget* pNotepad, const QString &strFileName, std::function<QsciScintilla*()>getCurEdit) {
    qDebug() << "NDD_PROC_MAIN: " << strFileName;

    NPLUGIN_IMPLEMENT(SvgPreview)
    // 让插件处在中间位置
    imp->move(pNotepad->geometry().center() - imp->rect().center());

	return 0;
}
